#include <mysql.h>
#include <stdio.h> 
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <iomanip>
#include "tag.h"
#include <sstream>

using namespace std;

//clear;g++ tag.cpp menu.cpp -L/usr/include/mysql -lmysqlclient -I/usr/include/mysql; ./a.out

void Tag::KolcsonzesListazas(){
	string query = "SELECT felhasznalok.nev,konyvek.id, konyvek.szerzo,konyvek.cim, kolcsonzesek.mikor, (mikor < NOW() - INTERVAL ((tag=2)*335+30) DAY) as kesett FROM kolcsonzesek,felhasznalok,konyvek WHERE tag_id='"+tag_id+"' and felhasznalok.id='"+tag_id+"' and konyvek.id = konyv_id and kifizetve=0";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Az on altal kikolcsonzott konyvek: "<<endl;
	cout<<"Id"<<setw(15)<<"Szerzo"<<setw(15)<<"Cim"<<setw(40)<<"Mikor vette ki"<<setw(30)<<"Kolcsonzesi ido lejart"<<endl;
	while (row = mysql_fetch_row(result)){  
		string kesett = row[5];
		cout<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<" - "<<row[4]<<" - ";
		if(kesett=="1") cout<<"Igen"<<endl;
		else cout<<"Nem"<<endl;
	} 
}
void Tag::Kolcsonzes(){
	string konyv_id;
	cout<<"Addja meg a kolcsonozni kivant konyv azonositojat(id): ";
	cin>>konyv_id;
	string query = "SELECT * FROM konyvek WHERE id='"+konyv_id+"' and kiveheto=1";
	result = dtb.Lekerdezes(query.c_str());
	if(mysql_num_rows(result)==0){
		cout<<"Ezt a konyvet mar kivettek, vagy nemtalalhato a konyvtarban!"<<endl;
	}
	else{
		query = "INSERT INTO kolcsonzesek (konyv_id, tag_id,mikor,dij,kifizetve) VALUES ('"+konyv_id+"','"+tag_id+"',NOW(),0,0)";
		result = dtb.Lekerdezes(query.c_str());
		query = "UPDATE konyvek SET kiveheto='0' WHERE id='"+konyv_id+"'";
		result = dtb.Lekerdezes(query.c_str());
	}
}

void Tag::ListazKonyvek(){
	string query = "SELECT * FROM konyvek ORDER BY szerzo";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Id"<<setw(5)<<"Szerzo"<<setw(15)<<"Cim"<<setw(16)<<"Kiado"<<setw(14)<<"Evszam"<<setw(10)<<"ISBN"<<setw(10)<<"Kolcsonozheto"<<endl;
	while (row = mysql_fetch_row(result)){  
		cout<<row[0]<<" - "<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<" - "<<row[4]<<" - "<<row[5]<<" - "<<row[6]<<endl;
	} 	
}

void Tag::KeresSzerzo(string s){
	string query = "SELECT * FROM konyvek WHERE szerzo LIKE '%"+s+"%'";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Id"<<setw(5)<<"Szerzo"<<setw(15)<<"Cim"<<setw(16)<<"Kiado"<<setw(14)<<"Evszam"<<setw(10)<<"ISBN"<<setw(10)<<"Kolcsonozheto"<<endl;
	while (row = mysql_fetch_row(result)){  
		cout<<row[0]<<" - "<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<" - "<<row[4]<<" - "<<row[5]<<" - "<<row[6]<<endl;
	} 
}
void Tag::KeresCim(string s){
	string query = "SELECT * FROM konyvek WHERE cim LIKE '%"+s+"%'";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Id"<<setw(5)<<"Szerzo"<<setw(15)<<"Cim"<<setw(16)<<"Kiado"<<setw(14)<<"Evszam"<<setw(10)<<"ISBN"<<setw(10)<<"Kolcsonozheto"<<endl;
	while (row = mysql_fetch_row(result)){  
		cout<<row[0]<<" - "<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<" - "<<row[4]<<" - "<<row[5]<<" - "<<row[6]<<endl;
	} 
}

void Tag::Keres(string s){
	string query = "SELECT * FROM konyvek WHERE cim LIKE '%"+s+"%' OR szerzo LIKE '%"+s+"%' OR  kiado LIKE '%"+s+"%' OR  evszam LIKE '%"+s+"%' OR  isbn LIKE '%"+s+"%'";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Id"<<setw(5)<<"Szerzo"<<setw(15)<<"Cim"<<setw(16)<<"Kiado"<<setw(14)<<"Evszam"<<setw(10)<<"ISBN"<<setw(10)<<"Kolcsonozheto"<<endl;
	while (row = mysql_fetch_row(result)){  
		cout<<row[0]<<" - "<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<" - "<<row[4]<<" - "<<row[5]<<" - "<<row[6]<<endl;
	} 
}

void Konyvtaros::TagListaz(){
	string query = "SELECT * FROM felhasznalok ORDER BY tag";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Id"<<setw(10)<<"Nev"<<setw(15)<<"Lakcim"<<setw(30)<<"Okiratszam"<<setw(25)<<"Elerhetoseg"<<setw(5)<<"Tag"<<endl;
	while (row = mysql_fetch_row(result)){  
	cout<<row[0]<<" - "<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<" - "<<row[4]<<" - ";
	string tip = row[5];
	if(tip=="0") cout<<" (0)Konyvtaros"<<endl;
	else if(tip=="1") cout<<" (1) Egyetemi hallgato"<<endl;
	else if(tip=="2") cout<<" (2) Egyetemi oktato"<<endl;
	else if(tip=="3") cout<<" (3) Mas egyetem polgara"<<endl;
	else if(tip=="4") cout<<" (4) Egyeb tag"<<endl;
	else cout<<"Nem letezo tipus"<<endl;
	} 
}

void Konyvtaros::Tagfelvetel(){
	string nev, cim, okiratszam, elerhetoseg;
	string tag;
	getline(cin,nev);
	cout<<"Addja meg a tag nevet(nem lehet ures): ";getline(cin,nev);
	cout<<"Addja meg a tag lakcimet: "; getline(cin,cim);
	cout<<"Addja meg a tag okiratszamar(nem lehet ures): ";  getline(cin,okiratszam);
	cout<<"Addja meg a tag elerhetoseget: "; getline(cin,elerhetoseg);
	cout<<"Addja meg a tag típusát:"<<endl;
	cout<<" 0) Konyvtaros"<<endl;
	cout<<" 1) Egyetemi hallgato"<<endl;
	cout<<" 2) Egyetemi oktato"<<endl;
	cout<<" 3) Mas egyetem polgara"<<endl;
	cout<<" 4) Egyeb tag"<<endl;
	cin>>tag;
	if((tag!="0" && tag!="1" && tag!="2" && tag!="3" && tag!="4" ) || nev=="" || okiratszam==""){
		cout<<"Hiba az adatokban!"<<endl;
		exit(1);
	}
	else{
		string query = "INSERT INTO felhasznalok (nev,lakcim,okiratszam,elerhetoseg,tag) VALUES ('"+nev+"','"+cim+"','"+okiratszam+"','"+elerhetoseg+"',"+tag+")";
		result = dtb.Lekerdezes(query.c_str());
	}
	
}
void Konyvtaros::TagTorles(){
	string azon;
	cout<<"Add meg a torolni kivant tag azonositojat(id): ";
	cin>>azon;
	if(azon == tag_id){
		cout<<"Nem törölheted magad!"<<endl;
	}
	else{
		string query = "DELETE FROM felhasznalok WHERE id='"+azon+"'";
		result = dtb.Lekerdezes(query.c_str());
	}
	
}

void Konyvtaros::KonyvTorlese(){
	string azon;
	cout<<"Add meg a torolni kivant konyv azonositojat(id): ";
	cin>>azon;
	string query = "DELETE FROM konyvek WHERE id='"+azon+"'";
	result = dtb.Lekerdezes(query.c_str());
}

void Konyvtaros::KonyvModosit(){
	string id,mezo,ujertek;
	cout<<"Addja meg a modositani kivant konyv azonositojat(id): ";cin>>id;
	cout<<"Addja meg a modositani kivant adatot: (szerzo,cim,kiado,evszam,isbn)";cin>>mezo;
	if(mezo!="szerzo" || mezo!="cim" ||mezo!="kiado" ||mezo!="evszam" || mezo!="isbn") cout<<"Hibas mezonev!"<<endl;
	else{
		cout<<"Addja meg a mezo uj erteket: "; cin>>ujertek;
		string query = "UPDATE konyvek SET "+mezo+"='"+ujertek+"' WHERE id='"+id+"'";
		result = dtb.Lekerdezes(query.c_str());
	}
}

void Konyvtaros::Tagmodosit(){
	string id,mezo,ujertek;
	cout<<"Addja meg a modositani kivant tag azonositojat(id): ";cin>>id;
	cout<<"Addja meg a modositani kivant adatot: (nev,lakcim,okiratszam,elerhetoseg,tag)";cin>>mezo;
	if(mezo!="nev" && mezo!="lakcim" && mezo!="okiratszam" && mezo!="elerhetoseg" && mezo!="tag") cout<<"Hibas mezonev!"<<endl;
	else{
		if(mezo=="tag"){
			cout<<"Addja meg a tag típusát(0,1,2,3,4):"<<endl;
			cout<<" 0) Konyvtaros"<<endl;
			cout<<" 1) Egyetemi hallgato"<<endl;
			cout<<" 2) Egyetemi oktato"<<endl;
			cout<<" 3) Mas egyetem polgara"<<endl;
			cout<<" 4) Egyeb tag"<<endl;
			cout<<"Addja meg a mezo uj erteket: "; cin>>ujertek;
			if(ujertek!="0" && ujertek!="1" && ujertek!="2" && ujertek!="3" && ujertek!="4" ) cout<<"Hibas ertek"<<endl;
			else{
				string query = "UPDATE felhasznalok SET "+mezo+"='"+ujertek+"' WHERE id='"+id+"'";
				result = dtb.Lekerdezes(query.c_str());
			}
		}
		else{
			cout<<"Addja meg a mezo uj erteket: "; cin>>ujertek;
			string query = "UPDATE felhasznalok SET "+mezo+"='"+ujertek+"' WHERE id='"+id+"'";
			result = dtb.Lekerdezes(query.c_str());
		}
	}
}

void Tag::KonyvVisszahozastRogzit(){
	string konyv_azon;
	int dij;
	stringstream s;
	s << kolcsonzesi_ido;
	cout<<"Addja meg a visszahozott konyv azonositojat(id): "; cin>>konyv_azon;
	string query = "SELECT *,mikor < NOW() - INTERVAL "+s.str()+" DAY as kesett FROM kolcsonzesek WHERE konyv_id='"+konyv_azon+"' and tag_id='"+tag_id+"'";
	result = dtb.Lekerdezes(query.c_str());	
	if(row = mysql_fetch_row(result)){
		string kesett = row[6];
		dij = kolcsonzesi_dij;
		cout<<"Esetleges tartozások: "<<endl<<"  Kolcsonzesi dij: "<<kolcsonzesi_dij<<endl;
		if(kesett=="1"){
			cout<<"  Keses miatti tartozas: "<<kesedelmi_dij<<endl;
			dij+=kesedelmi_dij;
		}
		stringstream ss;
		ss << dij;
		cout<<dij<<"Ft tartozas kifizetese a konyvtarosnak!";
		string query = "UPDATE kolcsonzesek SET vissza=NOW(),  dij="+ss.str()+", kifizetve=1 WHERE konyv_id='"+konyv_azon+"' and tag_id='"+tag_id+"'";
		dtb.Lekerdezes(query.c_str());
		query = "UPDATE konyvek SET kiveheto='1' WHERE id='"+konyv_azon+"'";
		result = dtb.Lekerdezes(query.c_str());
	}	
	else cout<<"Nem vettel ki ilyen konyvet!"<<endl;	
}	

void Konyvtaros::KonyvFelvetel(){
	string szerzo, cim, kiado, evszam,isbn;
	getline(cin,szerzo);
	cout<<"Addja meg a konyv szerzojet(nem lehet ures): "; getline(cin,szerzo);
	cout<<"Addja meg a konyv cimet(nem lehet ures): "; getline(cin,cim);
	cout<<"Addja meg a kiadot: "; cin>>kiado;
	cout<<"Addja meg a kiadas evszamat: "; cin>>evszam;
	cout<<"Addja meg a konyv isbn szamat: ";	cin>>isbn;
	if(szerzo=="" || kiado==""){
		cout<<"Hiba az adatokban!"<<endl;
		exit(1);
	}
	else{
		string query = "INSERT INTO konyvek (szerzo,cim,kiado,evszam,isbn) VALUES ('"+szerzo+"','"+cim+"','"+kiado+"','"+evszam+"','"+isbn+"')";
		result = dtb.Lekerdezes(query.c_str());
	}
}

void Konyvtaros::KesedelemListaz(){
	int dij;
	string query = "SELECT felhasznalok.nev, konyvek.szerzo,konyvek.cim, kolcsonzesek.mikor, (mikor < NOW() - INTERVAL ((tag=2)*335+30) DAY) as kesett FROM kolcsonzesek,felhasznalok,konyvek WHERE tag_id=felhasznalok.id and konyvek.id = konyv_id";
	result = dtb.Lekerdezes(query.c_str());
	cout<<"Nev"<<setw(5)<<"Szerzo"<<setw(15)<<"Cim"<<setw(16)<<"Mikor vette ki"<<endl;
	while(row = mysql_fetch_row(result)){
		string kesett = row[4];
		if(kesett=="1"){
			cout<<row[0]<<" - "<<row[1]<<" - "<<row[2]<<" - "<<row[3]<<endl;
		}
	
	}	
}
